package fr.exil.proto.quest.generator.quete;

import fr.exil.proto.quest.generator.quete.etape.Etape;

/* Un quete est generee automatiquement par les TDP et les PNJ quand le quota 
 * de quete d'un lieu est en dessous le seuil (Innorer pour se prototype.). 
 * 
 * Un quete possede un id unique pour l'identifier.
 * La quete possede un nom qui sera afficher pour le joueur.
 * La quete possede un type qui identifie un ensemble de contrainte pour le 
 * 		generateur. Ici, on ne stocke que le nom. 
 * 		(Pas besoin de toute les information destiner au generateur.)
 * La quete est condoser de une ou plusieurs étapes cree par le generateur.
 * 		On stocke donc le nombre d'etape. 
 * On stocke égalemlent l'etape actuelle.
 * On stocke dans un tableau les etapes. 
 * On stocke dans un tableau les condition general d'echec qui s'appliqueront
 * 		à toute les étapes. */
public class Quete {
    public enum Classe {
		CLASSE_1,
		CLASSE_2,
		CLASSE_3
    }
    
    private static int ID = 0;
    
    // Attributs
    protected int id;
    protected String nom;
    protected Classe classe;
    protected String type;
    protected int nbEtape;
    protected int etapeActuelle;
    protected Etape[] etapes;
    
    
   // Contructeurs
    public Quete(String nom, Classe classe, String type, int nbEtape, 
    		Etape[] etapes) {
        setId(ID++);
        setNom(nom);
        setClasse(classe);
        setType(type);
        setNbEtape(nbEtape);
        setEtapeActuelle(0);
        setEtapes(etapes);
    }
    
    // Methods
    public void abandonner() {
    	
    }
    
    //Getters et Setters
    public int getId() {return id;}
    private void setId(int id) {this.id = id;}
    
    public String getNom() {return nom;}
    private void setNom(String nom) {this.nom = nom;}
    
    public Classe getClasse() {return classe;}
    private void setClasse(Classe classe) {this.classe = classe;}
    
    public String getType() {return type;}
    private void setType(String type) {this.type = type;}
    
    public int getNbEtape() {return nbEtape;}
    private void setNbEtape(int nbEtape) {this.nbEtape = nbEtape;}
    
    public int getEtapeActuelle() {return etapeActuelle;}
    private void setEtapeActuelle(int etapeActuelle) {this.etapeActuelle 
    	= etapeActuelle;}
    
    public Etape getEtape() {return etapes[etapeActuelle];}
    private void setEtapes(Etape[] etapes) {this.etapes = etapes;}
}
